using System;
namespace Velocity4Net.App.Events
{
    /**
     *  Event handler for include type directives (e.g. <code>#include()</code>, <code>#parse()</code>)
     *  Allows the developer to modify the path of the resource returned.
     *
     * @author <a href="mailto:wglass@forio.com">Will Glass-Husain</a>
     * @version $Id: IncludeEventHandler.java 685685 2008-08-13 21:43:27Z nbubna $
     * @since 1.5
     */
    public interface IncludeEventHandler : EventHandler
    {
        /**
         * Called when an include-type directive is encountered (
         * <code>#include</code> or <code>#parse</code>). May modify the path
         * of the resource to be included or may block the include entirely. All the
         * registered IncludeEventHandlers are called unless null is returned. If
         * none are registered the template at the includeResourcePath is retrieved.
         *
         * @param includeResourcePath  the path as given in the include directive.
         * @param currentResourcePath the path of the currently rendering template that includes the
         *            include directive.
         * @param directiveName  name of the directive used to include the resource. (With the
         *            standard directives this is either "parse" or "include").
         *
         * @return a new resource path for the directive, or null to block the
         *         include from occurring.
         */
        String includeEvent(String includeResourcePath, String currentResourcePath, String directiveName);





    }
}